iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
自我挑戰組

從免費網路資源中入門java系列 第 26

【Day26】Java - Map (HashMap、TreeMap、LinkedHashMap)

  • 分享至 

  • xImage
  •  

簡介

在 Java 中,Map 是集合框架(Collection Framework)中的一種介面,用來儲存鍵值對(key-value pairs)的資料結構,使用key來存取value。 Map 介面中有多種具體的實作類別,如 HashMap、TreeMap 和 LinkedHashMap,可在java.util中找到。

基本概念

Map 中的每一個元素都由兩部分組成:鍵(key)和值(value)。鍵(key)是唯一的,不能重複,但值(value)可以重複。當我們想要根據某個唯一值來存取資料時,Map 會是個好選擇。例如,如果想要儲存學生的學號和姓名,就可以把學號作為鍵,姓名作為值。

常用的 Map 類別

HashMap:HashMap 使用哈希表來儲存元素,允許 null 鍵與 null 值。HashMap 不保證元素的順序。

TreeMap:TreeMap 根據鍵的自然順序或自定義的比較器來儲存鍵值對,當遍歷 TreeMap 時,元素會按照鍵的順序排序。

LinkedHashMap:LinkedHashMap 保持了鍵值對插入的順序,當遍歷 LinkedHashMap 時,元素會按照插入的順序進行排列。

常用的 Map 操作方法

  • put(K key, V value):將指定的鍵值對放入 Map 中,如果鍵已存在,則更新該鍵的值。
  • get(Object key):根據鍵查詢對應的值。如果鍵不存在,則返回 null。
  • remove(Object key):移除指定鍵對應的鍵值對。
  • containsKey(Object key):檢查 Map 中是否包含指定的鍵。
  • containsValue(Object value):檢查 Map 中是否包含指定的值。
  • keySet():返回 Map 中所有鍵的集合(Set)。可用來遍歷 Map 中的所有鍵,並通過這些鍵來取得對應的值。

Map寫法

Map<KeyType, ValueType> mapName = new MapImplementation<>();
// KeyType 是鍵的資料型態,例如 Integer、String 等。
// ValueType 是值的資料型態,例如 String、Double、CustomObject 等。
// mapName 是自訂的 Map 變數名稱。
// MapImplementation 是 Map 實作類型,例如 HashMap、TreeMap、LinkedHashMap。

使用範例

  1. 使用HashMap做一個學生成績管理系統,使用學號作為鍵,成績作為值,快速查詢學生的成績。
Map<String, Integer> studentGrades = new HashMap<>();
studentGrades.put("1011254821", 85); 
studentGrades.put("1011254808", 92);  
studentGrades.put("1011254842", 76);

// 快速查詢某個學生的成績
System.out.println("1011254821的成績: " + studentGrades.get("1011254808"));
// output: 1011254821的成績: 92
  1. 使用TreeMap做產品價格表,品名為鍵,價格為值,按名稱排序,方便按順序列出所有產品。
Map<String, Integer> productPrices = new TreeMap<>();
productPrices.put("Apple", 25);
productPrices.put("Orange", 20);
productPrices.put("Banana", 10);

// 按名稱順序列出產品
for (String product : productPrices.keySet()) {
   System.out.println(product + ": $" + productPrices.get(product));
}
// output: Apple: $25
// output: Banana: $10
// output: Orange: $20

上一篇
【Day25】Java - Set (HashSet、TreeSet、LinkedHashSet)
下一篇
【Day27】Java - 泛型(generic)
系列文
從免費網路資源中入門java30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言